package cn.xawl.gulimall.cart.service;

import cn.xawl.gulimall.cart.vo.Cart;
import cn.xawl.gulimall.cart.vo.CartItem;

/**
 * @author lh
 * @create 2020-11-02 15:50
 **/
public interface CartService {


    /**
     * 添加商品到购物车
     * @param skuId 商品的skuId
     * @param num 商品数量
     */
    void addToCart(Long skuId, Integer num);

    /**
     * 根据skuId查询当前用户添加的该商品的信息
     * @param skuId 商品的skuId
     * @return 购物车商品
     */
    CartItem getCartItems(Long skuId);

    /**
     * 查询当前用户的购物车
     * 未登录：所有临时用户的购物车
     * 已登录：未登录下临时用户的购物车以及登录用户已有的购物车
     * @return 购物车信息
     */
    Cart userCart();

    /**
     * 根据临时用户的user-key清除临时用户的购物车
     * @param tempUserKey 时用户的user-key
     */
    void clearTempCart(String tempUserKey);

    /**
     * 修改对应sku的选择属性
     * @param skuId skuId
     * @param change 是否被选择 change<0  ==> -1：未选择；-2：选择
     *               修改购物车的数量 change > 0
     *               或者是删除当前购物项 change = null
     */
    void cartItemChange(String skuId, Integer change);

}
